home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / coding / dsp / c5xug.exe / BIQUAD.ASM < prev    next >
Encoding:
Assembly Source File  |  1991-06-04  |  2.0 KB  |  66 lines

  1. ;**************************************************************
  2. ;  
  3. ;                 biquad.asm
  4. ;  
  5. ;                 staff
  6. ;  
  7. ;                 06-04-91
  8. ;  
  9. ;           (C) Texas Instruments Inc., 1992 
  10. ;  
  11. ;           Refer to the file 'license.txt' included with this 
  12. ;           this package for usage and license information. 
  13. ;  
  14. ;**************************************************************
  15.     .title "N Cascaded BiQuad IIR Filters"
  16.     .mmregs
  17.  
  18. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  19. ; This routine implements N cascaded blocks of biquad IIR
  20. ; canonic type II filters. Each biquad requires 3 data
  21. ; memory locations d(n),d(n-1),d(n-2), and 5 coefficients
  22. ; a1,a2,b0,b1,b2.
  23. ; For each block:    d(n) = x(n)+d(n-1)a1+d(n-2)a2
  24. ;            y(n) = d(n)b0+d(n-1)b1+d(n-2)b2
  25. ;
  26. ; Coefficients Storage: (low to high data memory)
  27. ;    a2,a1,b2,b1,b0, ... ,a2,a1,b2,b1,b0
  28. ;      1st biquad        Nth biquad
  29. ;
  30. ; State Variables: (low to high data memory)
  31. ;    d(n),d(n-1),d(n-2), ... ,d(n),d(n-1),d(n-2)
  32. ;        Nth biquad              1st biquad
  33. ;
  34. ; Entry Conditions:
  35. ;    AR1 -> d(n-2) of 1st biquad
  36. ;    AR2 -> a2 of 1st biquad
  37. ;    AR3 -> input Q15 number
  38. ;    AR4 -> output Q15 number
  39. ;    DP = 0, PM = 0, ARP = 3
  40. ;
  41. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  42.  
  43. BIQUAD: ;Setup variables;
  44.     ZPR            ;Clear P register
  45.     LACC    *,15,AR1    ;Get Q15 input
  46.     SPLK    #2,INDX     ;Setup index register
  47.     SPLK    #N-1,BRCR    ;Setup count
  48.  
  49.     ;Begin computation
  50.     RPTB    ELOOP-1     ;repeat for N biquads
  51. LOOP:    LT    *-,AR2        ;T = d(n-2)
  52.     MPYA    *+,AR1        ;Acc = x(n), P = d(n-2)a2
  53.     LTA    *-,AR2        ;Acc += d(n-2)a2, T = d(n-1)
  54.     MPY    *+        ;P = d(n-1)a1
  55.     LTA    *+,AR1        ;Acc += d(n-1)a1, T = b2
  56.     SACH    *0+,1        ;Save d(n)
  57.     MPY    *-        ;P = d(n-2)b2
  58.     LACL    #0        ;Acc = 0
  59.     LTD    *-,AR2        ;T = d(n-1), d(n-2) = d(n-1)
  60.     MPY    *+,AR1        ;Acc += d(n-2)b2, P = d(n-1)b1
  61.     LTD    *-,AR2        ;T = d(n), d(n-1) = d(n)
  62.     MPY    *+,AR1        ;Acc += d(n-1)b1, P = d(n)b0
  63. ELOOP:
  64.     LTA    *,AR4        ;Final accumulation
  65.     SACH    *,1        ;Save output in Q15 format
  66.